﻿Imports CapaLogica.CL.Entrada
Imports CapaLogica.CL.Blog
Imports CapaLogica.CL.UtilidadesGenerales
Imports System.Globalization
Imports System.Threading

Public Class Blog
    Inherits System.Web.UI.Page

    Private idBlog As Integer
    Private blogValido As Boolean

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Session("id") Is Nothing Then
            Response.Redirect("Login.aspx")
        End If

    End Sub

    Public Function datosBlog() As Dictionary(Of String, Object)

        Try
            Dim datosDelBlog As Dictionary(Of String, Object) = Nothing

            If Request("accion") = "MiBlog" Then
                datosDelBlog = GestorBlog.obtenerBlogUsuario(CType(Session("id"), Integer))
                Session.Add("idDeUso", CType(datosDelBlog("id"), Integer))
                btnBuscarVisita.Visible = False


            ElseIf Request("accion") = "MiBusqueda" Then
                datosDelBlog = (GestorBlog.obtenerBlogUsuario(CType(Session("id"), Integer)))
                btnBuscarVisita.Visible = False

            ElseIf Request("accion") = "visitante" Then
                datosDelBlog = GestorBlog.obtenerBlogUsuario(CType(Request("idUsuario"), Integer))
                Session.Add("idDeUso", CType(datosDelBlog("idUsuario"), Integer))
                btnBuscarMiBlog.Visible = False

            ElseIf Request("accion") = "VisitaBusqueda" Then
                datosDelBlog = (GestorBlog.obtenerBlogUsuario(CType(Session("idDeUso"), Integer)))
                btnBuscarMiBlog.Visible = False

            ElseIf Request("accion") = "Borrar" Then
                datosDelBlog = (GestorBlog.obtenerBlogUsuario(CType(Session("id"), Integer)))
                eliminarEntrada()
            End If

            'Aca consigo el id del blog.
            idBlog = CType(datosDelBlog("id"), Integer)
            Return datosDelBlog
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de cargar el Blog.", Response)
        End Try


    End Function


    Public Function listarEntradas() As String 'Para usar esta funcion se ocupa haber conseguido el id del blog en el metodo  datosBlog()
        Try
            Dim entradas As List(Of Dictionary(Of String, Object)) = Nothing

            If Request("accion") = "MiBlog" Or Request("accion") = "visitante" Then

                entradas = GestorEntrada.listarEntradasBlog(idBlog)


            ElseIf Request("accion") = "MiBusqueda" Or Request("accion") = "VisitaBusqueda" Then

                Dim fechaInicio As DateTime = Convert.ToDateTime(CType(Request("fechaInicio"), String))
                Dim fechaFin As DateTime = Convert.ToDateTime(CType(Request("fechaFin"), String))
                entradas = GestorEntrada.listarEntradasBlogPorFecha(idBlog, fechaInicio, fechaFin)


            End If

            Return crearHTMLEntradas(entradas)
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de listar las entradas", Response)
        End Try



    End Function


    Public Function validarBlog(ByRef datosBlog As Dictionary(Of String, Object)) As String
        Try


            Dim estado As Boolean = CType(datosBlog("estado"), Boolean)
            Dim bloqueado As Boolean = CType(datosBlog("bloqueado"), Boolean)



            If bloqueado = True Then
                blogValido = False
                Return "Blog Bloqueado"

            ElseIf estado = False Then
                blogValido = False
                Return "Blog Desactivado"

            Else
                blogValido = True
                Return ""
            End If

        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de validar el blog", Response)
        End Try

    End Function



    Private Function crearHTMLEntradas(ByRef entradas As List(Of Dictionary(Of String, Object))) As String

        Try


            Dim cultura As New CultureInfo("es-CR")
            Dim html As String = ""
            For Each entrada As Dictionary(Of String, Object) In entradas

                html += "<div id='ent" & CType(entrada("id"), String) & "' class='entrada'>" &
                            "<h3>" & CType(entrada("fecha"), DateTime).ToString("D", cultura) & "</h3>" &
                            "<div class='contenido'>" &
                                "<div class='titulo'><h2>" & CType(entrada("titulo"), String) & "</h2></div>" &
                                "<div class='texto'>" &
                                    "<span>" & CType(entrada("comentario"), String) & "</span>" &
                                "</div>" &
                            "</div>" &
                            "<br>"

                If Request("accion") = "MiBlog" Or Request("accion") = "MiBusqueda" Then
                    html += "<img id='" & CType(entrada("id"), String) & "' class='iconsForo consu_Mientrada' title='Consultar Entrada' src='images/lupa.jpg'></img>"

                    If blogValido = True Then
                        html += "<img id='" & CType(entrada("id"), String) & "' class='iconsForo eliminar_entrada' title='Eliminar Entrada' src='images/collapse24-black.png'></img>"

                    End If

                Else
                    html += "<img id='" & CType(entrada("id"), String) & "' class='iconsForo consu_Entrada' title='Consultar Entrada' src='images/lupa.jpg'></img>"

                End If

                html += "</div>"
            Next

            Return html

        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de listar las entradas", Response)
        End Try
    End Function



    Protected Sub btnRegistrarEntrada_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRegistrarEntrada.Click
        Try
            GestorEntrada.crearEntrada(txtTitulo.Text, txtEntrada.Text, CType(Session("idDeUso"), Integer))
            txtEntrada.Text = ""
            txtTitulo.Text = ""
            Response.Redirect("Blog.aspx?accion=MiBlog")

        Catch es As ThreadAbortException
            Response.Redirect("Blog.aspx?accion=MiBlog")
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de crear las entradas", Response)
        End Try



    End Sub

    Public Function habilitarBotonEscrituraEntrada() As String

        Try
            If Request("accion") = "MiBlog" Or Request("accion") = "MiBusqueda" Then
                If blogValido = True Then
                    Return " <td>" &
                                            "<input id='btnEscribirEntrada' type='button' value='Escribir Entrada' onclick='habilitarEscrituraEntrada()'/>" &
                                           "</td>"
                End If
            Else
                Return ""
            End If
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de de habilitar al entrada", Response)
        End Try



    End Function

    Protected Sub btnBuscarVisita_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBuscarVisita.Click
        Dim direccion As String = ""

        Try
            Dim fechaInicio As DateTime = dtpInicio.CalendarDate
            Dim fechaFin As DateTime = dtpFin.CalendarDate
            direccion = "Blog.aspx?accion=VisitaBusqueda&fechaInicio=" & fechaInicio.ToShortDateString() & "&fechaFin=" & fechaFin.ToShortDateString()
            Response.Redirect(direccion)
        Catch es As ThreadAbortException
            Response.Redirect(direccion)
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de realizar la busqueda.", Response)
        End Try


    End Sub

    Protected Sub btnBuscarMiBlog_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBuscarMiBlog.Click
        Dim direccion As String = ""
        Try
            Dim fechaInicio As DateTime = dtpInicio.CalendarDate
            Dim fechaFin As DateTime = dtpFin.CalendarDate
            direccion = "Blog.aspx?accion=MiBusqueda&fechaInicio=" & fechaInicio.ToShortDateString() & "&fechaFin=" & fechaFin.ToShortDateString()
            Response.Redirect(direccion)
        Catch es As ThreadAbortException
            Response.Redirect(direccion)
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de realizar la busqueda.", Response)
        End Try

    End Sub

    Protected Sub bntListarTodas_Click(ByVal sender As Object, ByVal e As EventArgs) Handles bntListarTodas.Click
        Dim direccion As String = ""

        If Request("accion") = "MiBlog" Or Request("accion") = "MiBusqueda" Then
            direccion = "Blog.aspx?accion=MiBlog"

        ElseIf Request("accion") = "visitante" Or Request("accion") = "VisitaBusqueda" Then
            direccion = "Blog.aspx?accion=visitante&idUsuario=" & CType(Session("idDeUso"), String)
        End If

        Response.Redirect(direccion)
    End Sub


    Private Sub eliminarEntrada()
        Try
            GestorEntrada.eliminarEntradaBlog(CType(Request("idEntrada"), Integer))
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de eliminar la entrada.", Response)
        End Try
    End Sub

End Class